/*
 * This file is part of aion-lightning <aion-lightning.com>.
 *
 *  aion-lightning is free software: you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation, either version 3 of the License, or
 *  (at your option) any later version.
 *
 *  aion-lightning is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with aion-lightning.  If not, see <http://www.gnu.org/licenses/>.
 */
package com.aionengine.gameserver.dataholders;

import com.aionengine.gameserver.model.templates.walker.RouteParent;
import com.aionengine.gameserver.model.templates.walker.RouteVersion;

import javax.xml.bind.Unmarshaller;
import javax.xml.bind.annotation.*;
import java.util.HashMap;
import java.util.List;

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {"routeGroups"})
@XmlRootElement(name = "walker_versions")
public class WalkerVersionsData {

    @XmlElement(name = "walk_parent")
    protected List<RouteParent> routeGroups;

    @XmlTransient
    protected HashMap<String, String> walkParents = new HashMap<>();

    protected void afterUnmarshal(Unmarshaller u, Object parent) {
        for (RouteParent group : routeGroups) {
            for (RouteVersion version : group.getRouteVersion())
                walkParents.put(version.getId(), group.getId());
        }
    }

    public boolean isRouteVersioned(String routeId) {
        if (routeId == null)
            return false;
        return walkParents.containsKey(routeId);
    }

    public String getRouteVersionId(String routeId) {
        if (routeId == null)
            return null;
        return walkParents.get(routeId);
    }

    public int size() {
        return walkParents.size();
    }
}
